Storage systems may include many devices including storage device and other devices connected to and/or in communication with the storage devices. These devices in communication with the storage devices often need to access commands and/or data associated with the storage devices. In many different types of storage systems, commands are queued and the commands are executed in a random order.
The Serial ATA (SATA) computer bus is one storage-interface for connecting host bus adapters to storage devices such as hard disk drives and optical drives, etc. Currently, in SATA systems and other comparable systems, commands are queued and the order that the commands are executed is random. A device connected to a SATA drive does not have any knowledge as to the order the write commands will be executed.
Thus, the device attached to a SATA drive may not pre-fetch write data unless it has enough resources to pre-fetch write data for all of the commands. Pre-fetching for all commands is very costly because pre-fetching all commands requires the use of a large portion of memory. Additionally, this pre-fetching may not add performance because the command being executed may not necessarily be the command for which data has been pre-fetched. There is thus a need for addressing these and/or other issues associated with the prior art.